/**
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 */
package com.jeesite.modules.storage.dao;

import com.jeesite.common.dao.CrudDao;
import com.jeesite.common.mybatis.annotation.MyBatisDao;
import com.jeesite.modules.storage.entity.Order;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 订单DAO接口
 */
@MyBatisDao
public interface OrderDao extends CrudDao<Order> {

    /**
     * 查找订单Id【会员Id】
     * @param transMemberId 转发会员Id
     * @param memberId 会员Id
     * @return 订单Id
     */
    String findIdByMemberId(@Param("transMemberId")String transMemberId,@Param("memberId") String memberId);

    /**
     * 查找会员订单列表【关键字】
     * @param memberId 会员Id
     * @param keywords 关键字
     * @param offset 开端
     * @param size 每页数量
     * @return 会员订单列表
     */
    List<Map> findSearchList(@Param("memberId") String memberId,@Param("keywords") String keywords,@Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 查找会员订单列表【会员Id】
     * @param transMemberId 转发会员Id
     * @param memberId 会员Id
     * @param payment 待支付
     * @param delivery 待发货
     * @param recipient 待收货
     * @param complete 已完成
     * @param offset 开端
     * @param size 每页数量
     * @return 会员订单列表
     */
    List<Map> findListByMemberId(@Param("transMemberId") String transMemberId,@Param("memberId") String memberId,@Param("payment") Boolean payment,@Param("delivery") Boolean delivery,@Param("recipient") Boolean recipient,@Param("complete") Boolean complete, @Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 查找会员售后订单列表【会员Id】
     * @param transMemberId 转发会员Id
     * @param memberId 会员Id
     * @param waiting 待处理
     * @param processing 处理中
     * @param complete 已完成
     * @param reject 已驳回
     * @param offset 开端
     * @param size 每页数量
     * @return 会员售后订单列表
     */
    List<Map> findServiceListByMemberId(@Param("transMemberId") String transMemberId,@Param("memberId") String memberId,@Param("waiting") Boolean waiting,@Param("processing") Boolean processing,@Param("complete") Boolean complete,@Param("reject") Boolean reject, @Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 查找我的售后处理订单列表【会员Id】
     * @param memberId 会员Id
     * @param waiting 待处理
     * @param processing 处理中
     * @param complete 已完成
     * @param reject 已驳回
     * @param offset 开端
     * @param size 每页数量
     * @return 会员售后订单列表
     */
    List<Map> findHandleListByMemberId(@Param("memberId") String memberId,@Param("waiting") Boolean waiting,@Param("processing") Boolean processing,@Param("complete") Boolean complete,@Param("reject") Boolean reject, @Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 查找订单详情【订单Id】
     * @param orderId 订单Id
     * @return 订单详情
     */
    Map findById(@Param("orderId") String orderId);

    /**
     * 查找订单列表【管理端】
     * @param status 订单状态
     * @param offset 开端
     * @param size 每页数量
     * @return 订单列表
     */
    List<Map> findListForManage(@Param("status") String status,@Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 查找订单数量【管理端】
     * @param status 订单状态
     * @return 订单数量
     */
    Integer findListCountForManage(@Param("status") String status);

    /**
     * 查找售后订单列表【管理端】
     * @param serviceStatus 售后状态
     * @param offset 开端
     * @param size 每页数量
     * @return 售后订单列表
     */
    List<Map> findServiceListForManage(@Param("serviceStatus") String serviceStatus,@Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 查找售后订单数量【管理端】
     * @param serviceStatus 售后状态
     * @return 售后订单数量
     */
    Integer findServiceListCountForManage(@Param("serviceStatus") String serviceStatus);
}